--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <object class="GtkWindow" id="window1">
+ <property name="title" translatable="yes">Constraints</property>
+ <child>
+ <object class="ConstraintsGrid">
+ <property name="layout-manager">
+ <object class="GtkConstraintLayout">
+ <constraints>
+ <guide name="space"
+ min-width="10" min-height="10"
+ nat-width="100" nat-height="10"
+ max-width="200" max-height="20"
+ strength="strong"/>
+ <constraint target="button1" target-attribute="start"
+ relation="ge"
+ constant="0"
+ strength="required"/>
+ <constraint target="button1" target-attribute="top"
+ relation="ge"
+ constant="0"
+ strength="required"/>
+ <constraint target="button1" target-attribute="width"
+ relation="le"
+ constant="200"
+ strength="required"/>
+ <constraint target="super" target-attribute="start"
+ relation="eq"
+ source="button1" source-attribute="start"
+ constant="-8"
+ strength="required"/>
+ <constraint target="button1" target-attribute="width"
+ relation="eq"
+ source="button2" source-attribute="width"
+ strength="required"/>
+ <constraint target="button1" target-attribute="end"
+ relation="eq"
+ source="space" source-attribute="start"
+ strength="required"/>
+ <constraint target="space" target-attribute="end"
+ relation="eq"
+ source="button2" source-attribute="start"
+ strength="required"/>
+ <constraint target="button2" target-attribute="end"
+ relation="eq"
+ source="super" source-attribute="end"
+ constant="-8"
+ strength="required"/>
+ <constraint target="super" target-attribute="start"
+ relation="eq"
+ source="button3" source-attribute="start"
+ constant="-8"
+ strength="required"/>
+ <constraint target="button3" target-attribute="end"
+ relation="eq"
+ source="super" source-attribute="end"
+ constant="-8"
+ strength="required"/>
+ <constraint target="super" target-attribute="top"
+ relation="eq"
+ source="button1" source-attribute="top"
+ constant="-8"
+ strength="required"/>
+ <constraint target="super" target-attribute="top"
+ relation="eq"
+ source="button2" source-attribute="top"
+ constant="-8"
+ strength="required"/>
+ <constraint target="button1" target-attribute="bottom"
+ relation="eq"
+ source="button3" source-attribute="top"
+ constant="-12"
+ strength="required"/>
+ <constraint target="button2" target-attribute="bottom"
+ relation="eq"
+ source="button3" source-attribute="top"
+ constant="-12"
+ strength="required"/>
+ <constraint target="button3" target-attribute="height"
+ relation="eq"
+ source="button1" source-attribute="height"
+ strength="required"/>
+ <constraint target="button3" target-attribute="height"
+ relation="eq"
+ source="button2" source-attribute="height"
+ strength="required"/>
+ <constraint target="button3" target-attribute="bottom"
+ relation="eq"
+ source="super" source-attribute="bottom"
+ constant="-8"
+ strength="required"/>
+ </constraints>
+ </object>
+ </property>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label">Child 1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label">Child 2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button3">
+ <property name="label">Child 3</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
--- /dev/null
+/* Constraints/Builder
+ *
+ * GtkConstraintLayouts can be created in .ui files, and
+ * constraints can be set up at that time as well, as this
+ * example demonstrates.
+ */
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+G_DECLARE_FINAL_TYPE (ConstraintsGrid, constraints_grid, CONSTRAINTS, GRID, GtkWidget)
+
+struct _ConstraintsGrid
+{
+ GtkWidget parent_instance;
+};
+
+G_DEFINE_TYPE (ConstraintsGrid, constraints_grid, GTK_TYPE_WIDGET)
+
+static void
+constraints_grid_init (ConstraintsGrid *grid)
+{
+}
+
+static void
+constraints_grid_class_init (ConstraintsGridClass *klass)
+{
+}
+
+GtkWidget *
+do_constraints4 (GtkWidget *do_widget)
+{
+ static GtkWidget *window;
+
+ if (!window)
+ {
+ GtkBuilder *builder;
+
+ g_type_ensure (constraints_grid_get_type ());
+
+ builder = gtk_builder_new_from_resource ("/constraints4/constraints.ui");
+
+ window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
+ gtk_window_set_display (GTK_WINDOW (window),
+ gtk_widget_get_display (do_widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
+ g_object_unref (builder);
+ }
+
+ if (!gtk_widget_get_visible (window))
+ gtk_widget_show (window);
+ else
+ gtk_window_destroy (GTK_WINDOW (window));
+
+ return window;
+}
<file>demoimage.c</file>
<file>demoimage.h</file>
</gresource>
+ <gresource prefix="/constraints4">
+ <file>constraints.ui</file>
+ </gresource>
<gresource prefix="/css_accordion">
<file>css_accordion.css</file>
<file>reset.css</file>
<file>constraints.c</file>
<file>constraints2.c</file>
<file>constraints3.c</file>
+ <file>constraints4.c</file>
<file>css_accordion.c</file>
<file>css_basics.c</file>
<file>css_blendmodes.c</file>